import java.util.Scanner;

public class MGZ {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        while(s.hasNext()) {
            int n = s.nextInt();
            int m = s.nextInt();
            int k = s.nextInt();
            double[][] map = new double[n + 1][m + 1];
            while(k != 0) {
                int x = s.nextInt();
                int y = s.nextInt();
                map[x][y] = 1.0;
                k--;
            }
            double[][] dp = new double[n + 1][m + 1];
            dp[1][1] = 1.0;
            for(int i = 1; i <= n; i++) {
                for(int j = 1; j <= m; j++) {
                    if(map[i][j] != 1.0 && (i != 1 || j != 1)) {
                        dp[i][j] = dp[i - 1][j] *(j == m ? 1.0 : 0.5) + dp[i][j - 1] * (i == n ? 1.0 : 0.5);
                    }
                    if(map[i][j] == 1.0) {
                        dp[i][j] = 0.0;
                    }
                }
            }
            System.out.println(dp[n][m]);
        }
    }
}
